home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 1 / Cream of the Crop 1.iso / PROGRAM / ZTIMER11.ARJ / BUILDRSP.C < prev    next >
C/C++ Source or Header  |  1992-04-18  |  3KB  |  113 lines

  1. /****************************************************************************
  2. *
  3. *                                Buildrsp
  4. *
  5. *                    Copyright (C) 1991 Kendall Bennett.
  6. *                            All rights reserved.
  7. *
  8. * Filename:        $RCSfile: buildrsp.c $
  9. * Version:        $Revision: 1.1 $
  10. *
  11. * Language:        ANSI C
  12. * Environment:    MS DOS
  13. *
  14. * Description:    Program to build a response file from a file containing
  15. *                a simple list of files. The format of the response file
  16. *                is specified using a standard printf style format string.
  17. *
  18. * $Id: buildrsp.c 1.1 92/04/18 17:25:52 kjb Exp $
  19. *
  20. * Revision History:
  21. * -----------------
  22. *
  23. * $Log:    buildrsp.c $
  24. * Revision 1.1  92/04/18  17:25:52  kjb
  25. * Initial revision
  26. ****************************************************************************/
  27.  
  28. #include <stdio.h>
  29. #include <malloc.h>
  30. #include <process.h>
  31. #include <string.h>
  32. #include <ctype.h>
  33.  
  34. #ifdef __MSDOS__
  35. #include <dir.h>
  36. #endif
  37.  
  38. #define    MAX_FILES        200            /* 200 files maximum                */
  39.  
  40. #define    true            1
  41. #define    false            0
  42.  
  43. /*------------------------- Global variables ------------------------------*/
  44.  
  45. char    *rcsid = "$Id: buildrsp.c 1.1 92/04/18 17:25:52 kjb Exp $";
  46. char    *filenames[MAX_FILES];
  47.  
  48. /* Open a file returning true if successful */
  49.  
  50. int openfile(FILE **in,char *filename,char *mode)
  51. {
  52.     if( (*in = fopen(filename,mode) ) == NULL) {
  53.         return false;    /* Open failed                                    */
  54.         }
  55.     else
  56.         return true;    /* Open was successful                            */
  57. }
  58.  
  59. void readfilenames(char *name,char *filenames[],int *numfiles)
  60. /****************************************************************************
  61. *
  62. * Function:        readfilenames
  63. * Parameters:    name        - Name of file to read filenames from
  64. *                filenames[]    - Array to place filenames in
  65. *                numfiles    - Number of filenames read
  66. *
  67. * Description:    Reads the names of the files to translate from the
  68. *                specified file 'name'. We expect each file name to we
  69. *                a whole word on the line and ignore all whitespace.
  70. *
  71. ****************************************************************************/
  72. {
  73.     char    buf[MAXPATH];
  74.     FILE    *f;
  75.  
  76.     if (!openfile(&f,name,"rt")) {
  77.         printf("Unable to open the file: %s\n",name);
  78.         exit(1);
  79.         }
  80.  
  81.     *numfiles = 0;
  82.     while (!feof(f) && (fscanf(f," %s ",buf) == 1)) {
  83.         filenames[*numfiles] = strdup(buf);
  84.         (*numfiles)++;
  85.         }
  86.  
  87.     fclose(f);
  88. }
  89.  
  90. int main(int argc,char *argv[])
  91. {
  92.     int        i,numfiles;
  93.  
  94.     if (argc != 2) {
  95.         printf("Usage: buildrsp <filelist>\n\n");
  96.         printf("where <filelist> is the name of a file containing the\n");
  97.         printf("filenames to build the turbo librarian response file with.\n");
  98.         printf("The response file is sent to the standard output device.\n");
  99.         exit(1);
  100.         }
  101.  
  102.     readfilenames(argv[1],filenames,&numfiles);
  103.  
  104.     /* Build each line of the response file */
  105.  
  106.     for (i = 0; i < numfiles-1; i++)
  107.         printf("+-%s &\n",filenames[i]);
  108.     printf("+-%s\n\n",filenames[i]);
  109.  
  110.     return 0;
  111. }
  112.